package com.rem.chat.service;

import com.rem.chat.pojo.request.UserInfoSaveRequest;
import com.rem.chat.pojo.request.UserModifyPasswordRequest;
import com.rem.chat.pojo.response.GetUserInfoResponse;
import com.rem.chat.pojo.response.SearchUserInfoResponse;
import com.rem.chat.service.enums.UserContactStatusEnum;
import org.springframework.web.multipart.MultipartFile;

import java.io.IOException;

public interface UserService {
    /**
     * 获取用户详细信息
     * @param userId 用户 id
     * @return 用户详细信息
     */
    GetUserInfoResponse getUserInfo(String userId);

    /**
     * 搜索用户详细信息
     * @param userId 用户 id
     * @param contactId 被搜用户 id
     * @return 用户详细信息
     */
    SearchUserInfoResponse searchUserInfo(String userId, String contactId);

    /**
     * 删除/拉黑联系人
     * @param userId 用户 id
     * @param contactId 联系人 id
     * @param statusEnum 是删除还是拉黑
     * @return 是否删除/拉黑成功
     */
    Boolean removeContact(String userId, String contactId, UserContactStatusEnum statusEnum);

    /**
     * 更新用户信息
     * @param request 用户信息
     * @param avatarFile 用户头像
     * @param avatarCover 用户头像缩略图
     * @return 更新后的用户信息
     */
    GetUserInfoResponse saveUserInfo(UserInfoSaveRequest request, MultipartFile avatarFile, MultipartFile avatarCover) throws IOException;

    /**
     * 修改用户密码
     * @param userId 用户密码
     * @param param 修改密码参数
     * @return 是否修改成功
     */
    Boolean modifyPassword(String userId, UserModifyPasswordRequest param);
}
